package com.example.demo.service;

import com.example.demo.entity.Articleinfo;
import com.example.demo.entity.Userinfo;
import com.example.demo.mapper.ArticleMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * Description:
 */
@Service
public class ArticleService {

    @Resource
    private ArticleMapper mapper;

    // 查询用户信息和用户博客数量
    public Integer getArtCountByUid(Integer uid) {
        return mapper.getArtCountByUid(uid);
    }

    // 根据用户 id 查询用户所有博客
    public List<Articleinfo> getMyList(Integer uid, Integer start, Integer size) {
        return mapper.getMyList(uid, start, size);
    }

    // 根据用户 id 查询用户所有草稿
    public Integer getDraftCountByUid(Integer uid) {
        return mapper.getDraftCountByUid(uid);
    }

    // 根据博客 id 逻辑删除博客信息
    public Integer del(Integer id, Integer uid) {
        return mapper.del(id, uid);
    }

    // 根据文章 id 获取文章详情信息
    public Articleinfo getDetail(Integer id) {
        return mapper.getDetail(id);
    }

    // 根据文章 id 获取文章详情信息，并进行身份校验
    public Articleinfo getMyDetail(@Param("id") Integer id, @Param("uid") Integer uid) {
        return mapper.getMyDetail(id, uid);
    }

    // 根据文章 id 将文章阅读量自增
    public Integer addRcountById(Integer id) {
        return mapper.addRcountById(id);
    }

    // 新增文章操作
    public Integer addArticle(Articleinfo articleinfo) {
        return mapper.addArticle(articleinfo);
    }

    // 新增定时发布文章操作
    public Integer addTimeArticle(Articleinfo articleinfo) {
        return mapper.addTimeArticle(articleinfo);
    }

    // 修改文章内容
    public Integer updateArticle(Articleinfo articleinfo) {
        return mapper.updateArticle(articleinfo);
    }

    // 修改文章状态码
    public Integer updateArticleState(Articleinfo articleinfo) {
        return mapper.updateArticleState(articleinfo);
    }

    // 保存草稿
    public Integer addDraft(Articleinfo articleinfo){
        return mapper.addDraft(articleinfo);
    }

    // 根据开始位置和一页的最大博客数量来获取之后的博客内容，按照时间降序获取
    public List<Articleinfo> getList(Integer start, Integer size) {
        return mapper.getList(start, size);
    }

    // 根据用户 id、state、start、size查询用户草稿，按照修改时间降序获得
    public List<Articleinfo> getMyDraftList(Integer uid, Integer start, Integer size) {
        return mapper.getMyDraftList(uid, start, size);
    }
}
